# delattr(object, name) 用于删除对象的指定属性
# object  参数表示要删除属性的对象， name  参数表示要删除的属性名。
# 如果对象没有名为  name  的属性，则会引发  AttributeError  异常
# class Person:
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def __str__(self):
#         return f'Person(name = {self.name},age = {self.age})'
# p = Person('Alice',25)
# print(p)  #Person(name = Alice,age = 25 age
# delattr(p,'age')
# print(p)        #Person(name = Alice,age = 25
#定义了一个 Person 类，包含 name  和  age 两个属性。创建了一个 Person 对象  p ，
# 并使用 delattr() 函数删除了 p 对象的 age 属性。最终输出结果中只包含 name 属性。

# dict(mapping, **kwarg) 用于创建一个字典，
# **kwarg  表示以关键字参数的形式传入键值对，如  a=1, b=2 ；
# mapping  表示传入另一个字典；
# iterable  表示传入一个可迭代对象，例如由元组组成的列表
#以关键字参数的形式传入键值对，
# d1 = dict(name='Aliic',age = 22,gender = 'female')
# print(d1) #{'name': 'Aliic', 'age': 22, 'gender': 'female'}
# # 传入另一个字典
# d2 = dict({'name':'bot','age':22},gender = 'male')
# print(d2)  #{'name': 'bot', 'age': 22, 'gender': 'male'}
# #传入一个可迭代对象
# d3 = dict([('name','charlie'),('age',22),('gender','male')])
# print(d3)  #{'name': 'charlie', 'age': 22, 'gender': 'male'}

#dir（） 用于按字母顺序返回所有包含已定义名称的列表
# def my_function():
#     x = 1
#     y = 2
#     return x+y
# print(dir())  #['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'my_function']
#输出包含了 Python 内置的名称和我们自定义的  my_function  函数

#divmod（x,y） 将 x 除于 y 并返回上和余数的元组，如果两个参数（非复数）都是整数，则结果返回是整数，否则返回浮点数
# a = 13
# b = 5
# result = divmod(a,b)
# print(result) #(2, 3)

# enumerate（iterable, start=0）  在迭代对象上生成一个枚举对象，返回可迭代对象中每一个元素的索引及其对应的值组成的元组
#  start  参数可用于指定索引从哪个值开始，默认为 0
# cars = ['tesla','BMW','Audi','Merceds']
# for i,car in enumerate(cars):
#     print(i,car)


# eval（） 将字符串作为代码执行，并返回结果，如果字符串中的一些代码是危险的或不受信任的，则可能会导致安全问题
# x = 1
# y = 3
# print(eval('x + y'))

# exec（） 用于在全局命名空间或局部命名空间中执行python代码字符串，并不返回任何值，
x = 1
y = 3
code_str = "z = x +y ;print(z)"
exec (code_str)  # 4

# filter(function, iterable) 用于过滤序列，返回一个迭代器，其中包含使传入的函数function返回True
#定义一个函数，用于过滤奇数
def is_odd(x):
    return x % 2!= 0
# 创建一个列表
numbers = [1,2,3,43,545,4,2,3]
#使用 filter 函数过滤出奇数
result = filter(is_odd,numbers)
#打印结果
print(list(result))  #[1, 3, 43, 545, 3]
#以上示例演示了如何使用  filter()  函数来过滤出列表  numbers  中的奇数。
# 在定义一个名为  is_odd()  的函数，用于判断一个数字是否为奇数，
# 然后将这个函数和列表  numbers  作为参数传递给  filter()  函数。
# 在调用  filter()  函数后，返回的结果是一个迭代器，我们使用  list()  函数将其转换为列表，
# 并将其打印出来。列表中的元素只包含列表中的奇数


